import constant from '@/views/kzzx/utils/constant'

/**
 * 获取几天后的日期
 * @param days
 * @returns {string}
 */
export function getDaysLater(days) {
  const date = new Date()
  date.setDate(new Date().getDate() + days)
  return formatDate(date)
}


/**
 * 获取几天前的时间
 */
export function getDaysAgo(days) {
  const date = new Date()
  date.setDate(new Date().getDate() - days)
  return formatDate(date)
}

/**
 * 获取几月前的月份
 * @param months
 * @returns {string}
 */
export function getMonthAgo(months) {
  const date = new Date()
  date.setMonth(date.getMonth() - months)

  const y = date.getFullYear()
  const m = String(date.getMonth()+1).padStart(2, '0') // 获取月份，补充为2位
  return `${y}-${m}`
}


export function getMonthAgoDate(months) {
  const date = new Date();
  date.setMonth(date.getMonth() - months); // 直接减去月份数

  return date;

}

/**
 * 获取几年前的月份
 * @param years
 * @returns {string}
 */
export function getYearAgo(years) {
  // 创建当前日期对象
  let today = new Date();
  // 获取当前年份
  let currentYear = today.getFullYear();
  // 创建去年的同一天
  let lastYear = new Date(today);
  lastYear.setFullYear(currentYear - 1);

  const y = lastYear.getFullYear()
  const m = String(lastYear.getMonth() + 1).padStart(2, '0') // 获取月份，补充为2位
  return `${y}-${m}`
}

/**
 * 获取几个月之前到现在的开始和结束时间
 */
export function getMonthAgoToNowSTTime(months){
  const start = getMonthAgo(months)+'-01 00:00:00'
  const end = formatDate(new Date())+ ' 23:59:59'
  return { start, end }
}

/**
 * 获取当前日期的开始和截止时间
 */
export function getNowDaySTTime() {
  const start = formatDate(new Date())+ ' 00:00:00'
  const end = formatDate(new Date())+ ' 23:59:59'
  return { start, end }
}

/**
 * 获取当前月份的开始和截止时间
 */
export function getNowMonthSTTime(){
  const currentDate = new Date();
  const startDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1) // 当前月的第一天
  const endDate = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0) // 当前月的最后一天

  // 格式化日期为 YYYY-MM-DD
  const start = formatDate(startDate)+ ' 00:00:00'
  const end = formatDate(endDate)+ ' 23:59:59'
  return { start, end }
}

/**
 * 获取当前年的开始和截止时间
 * @returns {{start: string, end: string}}
 */
export function getNowYearSTTime(){
  const currentDate = new Date();
  const startDate = new Date(currentDate.getFullYear(), 0, 1); // 当前月的第一天
  const endDate = new Date(currentDate.getFullYear(), 11, 31) // 当前月的最后一天

  // 格式化日期为 YYYY-MM-DD
  const start = formatDate(startDate)+ ' 00:00:00'
  const end = formatDate(endDate)+ ' 23:59:59'
  return { start, end }
}

/**
 * 获取某一个月的起止时间
 * @param monthStr
 */
export function getMonthStartEndTime(monthStr) {
  const [year, month] = monthStr.split('-') // 提取年份和月份
  const startDate = new Date(year, month - 1, 1) // 当前月的第一天
  const endDate = new Date(year, month, 0) // 当前月的最后一天

  // 格式化日期为 YYYY-MM-DD
  const start = formatDate(startDate)+ ' 00:00:00'
  const end = formatDate(endDate)+ ' 23:59:59'
  return { start, end }
}

/**
 * 获取某一个月的起止时间
 * @param monthStr
 */
export function getMonthStartEnd(monthStr) {
  const [year, month] = monthStr.split('-') // 提取年份和月份
  const startDate = new Date(year, month - 1, 1) // 当前月的第一天
  const endDate = new Date(year, month, 0) // 当前月的最后一天

  // 格式化日期为 YYYY-MM-DD
  const start = formatDate(startDate)
  const end = formatDate(endDate)
  return { start, end }
}


export function formatDate(date) {
  const y = date.getFullYear()
  const m = String(date.getMonth() + 1).padStart(2, '0') // 获取月份，补充为2位
  const d = String(date.getDate()).padStart(2, '0') // 获取日期，补充为2位
  return `${y}-${m}-${d}`
}

export function formatDateTime(date) {
  const y = date.getFullYear()
  const m = String(date.getMonth() + 1).padStart(2, '0') // 获取月份，补充为2位
  const d = String(date.getDate()).padStart(2, '0') // 获取日期，补充为2位
  const h = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  const seconds = String(date.getSeconds()).padStart(2, '0')
  return `${y}-${m}-${d} ${h}:${minutes}:${seconds}`
}

export function formatMonth(date) {
  const y = date.getFullYear()
  const m = String(date.getMonth() + 1).padStart(2, '0') // 获取月份，补充为2位
  return `${y}-${m}`
}

/**
 * 判断是否为小数
 * @param num
 */
export function isDecimal(num) {
  return num % 1 !== 0;  // 判断是否为小数
}

/**
 * 获取小数位
 * @param num
 */
export function getDecimalPlaces(num) {
  if (!isDecimal(num)) {
    return 0;  // 如果是整数，返回 0
  }
  const numStr = num.toString();  // 转为字符串
  const decimalPart = numStr.split('.')[1];  // 分割小数部分
  return decimalPart ? decimalPart.length : 0;  // 返回小数位数
}


export function getDaysInMonth(dateString){
  // 解析年份和月份
  const [year, month] = dateString.split('-').map(Number);

  // 创建一个日期对象，设置为下个月的1号
  const nextMonth = new Date(year, month, 1);

  // 设置日期为上个月的最后一天，即当前月的天数
  nextMonth.setDate(0);

  // 返回当月天数
  return nextMonth.getDate();
}
